package com.goa.core;

import io.netty.buffer.ByteBuf;
import io.netty.channel.ChannelHandlerContext;
import io.netty.handler.codec.ByteToMessageDecoder;
import org.apache.tomcat.util.buf.HexUtils;

import java.util.List;

/**
 * 解码器
  */
public class MyDecoder extends ByteToMessageDecoder {  
  
    @Override  
    protected void decode(ChannelHandlerContext ctx, ByteBuf in, List<Object> out) throws Exception {
        if (in.readableBytes() < 1) { // 假设至少需要一个字节来开始解码
            return;
        }
        // 假设我们想要解码整个缓冲区的内容
        byte[] bytes = new byte[in.readableBytes()];
        in.readBytes(bytes);
        // 使用HexFormat将字节转换为16进制字符串
        String hexString = HexUtils.toHexString(bytes);
        // 将解码后的字符串添加到输出列表中
        out.add(hexString);
        // 注意：这个解码器会一次性读取并解码整个缓冲区的内容。
        // 在实际应用中，你可能需要根据协议规范来分割和解析数据。
    }
}